﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WTwitter.Model.UserData;

namespace WTwitter.Model.Framework {

	public interface ITimeline {
		/// <summary>
		/// タイムラインに含まれるすべてのアイテム
		/// </summary>
		List<ITimelineItem> AllItems { get; }

		/// <summary>
		/// タイムラインが取得できる状態にあるかどうか
		/// </summary>
		bool IsUpdatable { get; }

		/// <summary>
		/// 認証のためのユーザー情報
		/// </summary>
		AuthInfo AuthInfo { get; }

		/// <summary>
		/// タイムラインを非同期で更新する
		/// </summary>
		void UpdateAsync();

		/// <summary>
		/// タイムラインを強制的に更新(Update)する
		/// ※MultiSourceTimelineのような通常受動的なタイムラインを
		/// 　強制的に任意のタイミングで更新したい時などの使用を想定している
		/// </summary>
		void ForceUpdate();

		/// <summary>
		/// タイムラインの取得結果を報告するイベント
		/// </summary>
		event EventHandler<ReadTimelineEventArgs> TimelineRead;
	}
}
